Conventional computer networking environments support the exchange of information between many interconnected computer systems. In a typical conventional computer networking environment, one or more client computer systems operate client software applications that transmit data access requests using a variety of data communications protocols over the computer network to server computer systems (i.e., servers) for receipt by server software applications executing on those servers. The server software applications receive the client data access requests and process these requests to access (e.g., read and/or write) data stored within data storage systems, such as disk drives or other mass storage systems, coupled to the server computer systems. The server computer systems transmit the requested data in a server response back to the client computer systems for receipt by the client software applications. In this manner, client/server software applications can effectively exchange data.
An example of popular conventional client/server information exchange system is provided by client and server software applications and an exchange protocol collectively referred to as the Network File System (NFS), originally developed by Sun Microsystems Inc. of Palo Alto, Calif., USA. Another example of such a conventional client-server system is the Common Internet File System (CIFS) created by Microsoft Corp. of Redmond, Wash., USA.
Generally, both NFS and CIFS provide respective client and server software portions (i.e., programs) that are typically integrated into the operating system of a computer to allow the computer system to export or remotely provide access to file and directories arranged within a file system managed by the operating system of that computer system. NFS is typically provided in standard distributions of the UNIX operating system, while CIFS provides similar functionality to that of NFS but for the Windows series of operating systems produced by Microsoft Corporation. Software developers have created implementations of NFS and CIFS that work in both UNIX and Windows-based computing system environments as well.
Other types of conventional data and information exchange systems include those provided by a set of applications and protocols collectively referred to as the World Wide Web. The World Wide Web most commonly operates over a collection of interconnected computer networks known as the Internet. In a typical implementation of the World Wide Web, client computer systems operate a client software application referred to as a web browser. A typical web browser operates to provide hypertext transport protocol (HTTP) requests for documents referred to as web pages over the computer network to web server computer systems. A web server software application operating in the web server computer system can receive and process an HTTP web page request and can return or “serve” a corresponding web page document or file specified in the client request back to the requesting client computer system over the computer network for receipt by the web browser. The web browser can interpret markup language such as the hypertext markup language (HTML) or the extensible markup language (XML) within the web page in order to render information such as text, graphics or multimedia information to the user of the web browser on a display of the client computer system. A collection of related web page documents that clients can access at a common network address or domain name on a network is generally referred to as a web site.
In addition to simply accessing web pages, more recent conventional software and networking technologies that work in conjunction with protocols such as HTTP provide services, known as “web services”, over a computer network such as the Internet. In a web services architecture, a server computer system can provide access to processing functionality using a scripting (i.e., programming) language called the Web Services Description Language (WSDL). A particular service expressed in WSDL can provide some processing functionality. Other computer systems that want to access this functionality can discover and invoke the web service offered by the server by submitting requests for the service to the server using XML data encoded in a Simple Object Access Protocol (SOAP) transferred to the server over HTTP. The XML/SOAP/HTTP web services architecture allows distributed computing servers to share processing functionality with other computers. When a server receives an invocation of a web service via an XML message encoded using SOAP, the server can decode the XML data, perform the service (i.e., some processing) on the data, and can return the result to the requesting computer system (i.e., a client).
Conventional server computer systems used in client/sever architectures are typically configured as powerful computer systems containing one or more high-performance central processing units or processors, significant amounts of memory, and provide access to high-capacity data storage systems for persistent storage of files, databases or other data. In many conventional configurations, a single server computer system and associated storage devices does not provide enough processing or storage capacity to meet the demand of a particular application. In such cases, system developers frequently provide for arrangements of a plurality of server computer systems within a tightly controlled local area network. Access to the collection of server computer systems can be controlled through networked data communications devices such as load balancers that can spread or distribute a series of client requests for data across the group of server computer systems such that no one particular server computer system is overburdened with client requests for data or services.
As an example, consider a popular web site that receives a large number of requests from client computer systems for web pages to be served from that site. In such a situation, an owner or developer of that web site may provide several server computer systems and respective server storage devices that are redundantly configured to each service client requests for web pages from that web site. A data communications device such as a specialized network router or switch can be configured as a load balancer to receive client requests from the computer network such as the Internet and distribute these requests evenly to each of the web servers. Since each web server contains its own duplicate copy of the web site information, each web server is able to service all client requests and thus the performance of the web site from the perspective of requesting client computer systems is improved by the existence of multiple server computer systems.
Typical conventional load balancing algorithms can evenly distribute client requests for data across the set of available server computer systems. More advanced conventional implementations of load balancing can account for server performance considerations and can distribute a higher number of client requests to servers that are experiencing better performance whereas servers that are experiencing worse performance can receive a proportionally smaller number of client requests.
Even more recent designs of information serving systems provide for “content aware” load balancers that perform content aware switching of requests for data or services. A server installation that provides a content aware load balancer allows different servers to store different information that may be requested by client computer systems. As client requests arrive at the content aware load balancing device, the content aware load balancer can inspect portions of the client request relating to the data being requested, such as portions of a Uniform Resource Locator (URL, and in response, can choose which particular server computer system should handle a particular client request based on the content (e.g., one or more portions of the URL) of the request itself, as well as taking into account the availability or performance of the servers. Conventional content aware request processing allows a web site administrator to configure the servers so that some servers only serve certain portions of data that clients may request while other servers serve other portions of data. Thus each server does not have to be identically configured.